#ifndef MY_NPU_H
#define MY_NPU_H

#include <errno.h>
#include <fcntl.h>
#include <limits.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <unistd.h>

#include <atomic>
#include <thread>

#include "FastMemcpy.h"
#include "detr.h"
#include "hi_buffer.h"
#include "hi_common.h"
#include "hi_common_region.h"
#include "hi_common_sys.h"
#include "hi_common_vb.h"
#include "hi_common_vgs.h"
#include "hi_common_video.h"
#include "hi_common_vpss.h"
#include "hi_math.h"
#include "hi_mpi_region.h"
#include "hi_mpi_sys_mem.h"
#include "hi_mpi_vb.h"
#include "hi_mpi_vgs.h"
#include "hi_mpi_vpss.h"
#include "opencv2/opencv.hpp"
#include "rgn.h"
#include "securec.h"

class NPU{
    public:
        NPU();
        ~NPU();
        bool Init(const std::string& model_path, bool is_yvu = true);
        bool NPUInvoke(bbox_t &bbox, float conf_thresh);
        bool NPUInvoke_client(bbox_t &bbox, float conf_thresh);
        RGN pen;
        RGN pen_client;
        Detection detr;
    private:
        hi_video_frame_info g_frame;
        bool is_yvu_;
};

#endif